package cn.chainco.cts.iservice;

import java.util.Date;
import java.util.List;

import cn.chainco.cts.jdo.Company;
import cn.chainco.cts.jdo.Employee;
import cn.chainco.cts.jdo.User;
import cn.chainco.cts.jdo.Verification;
import cn.chainco.cts.jdo.VerificationBill;
import cn.chainco.cts.jdo.WorkFee;

public interface IVerificationManager extends CommonManager{

	/**
	 * 获取某家公司指定创建天数某种类型的结算单的总数
	 */
	public int getCountByCompany(Company company, Date date,int type );

	/**
	 * 验证订凭证号是否存在
	 */
	public boolean validateCardNum(long id,Company company, String cardNum,int type);

	/**
	 * 根据凭证号查询结算单
	 */
	public Verification getVerificationBycardNum(Company company, String cardNum,int type);

	/**
	 * 生成订凭证号
	 */
	public String getNewCardNum(Company company,int type);
	
	/**
	 * 根据时间获取汇率
	 */
	public float getExcRateByTime(Date delegateTime, long currencyId);

	/**
	 * 根据时间获取转换的汇率值
	 */
	public float getExcRateByTime(Date delegateTime, long sourceCurrenyId, long targetCurrenyId);
	
	/**
	 * 获取某家公司某种状态的结算单的数据总数
	 */
	public int getCountByCompany(Company company,int type);
	
	/**
	 * 获取某家公司某种状态的结算单币种分组金额 type=0为收入（收款） 1为 支出（付款） 2为奖励
	 */
	public List<Object> getMoneyByCompany(Company company,Employee employee,int type);
	
	/**
	 * 获取某公司汇兑损益且根据币种分组
	 */
	public List<Object> getExchangeMoneyByCompany(Company company);
	
	/**
	 * 获取某公司银行手续费且根据币种分组
	 */
	public List<Object> getExchangeBlankMoneyByCompany(Company company,Employee employee);
	
	/**
	 * 根据结算单查询结算明细
	 */
	public List<VerificationBill> getVerificationBillByParent( long verificationId);
	
	/***
	 * 根据某个委托方查询某公司底下的应收/应付/奖励款 type=1为应收，type=2为代收，type=3为应付，type=4为代付 type=5为奖励,searchTyps只有奖励的时候用到，格式为已归档的订单;应收已收的订单;应付已付的订单
	 */
	public List<WorkFee> getWorkFeeByCondition( Company company,Employee employee,int type,String workCode,String searchTyps );
	
	
	/**
	 * 获取某人在某家公司的结算单的某种类别的总数
	 */
	public int getCountByStatus( Company company,User user,Employee employee,int type);
	
	/***
	 * 列表查询
	 */
	public List<Verification> getVerificationByConditon( Company company,Employee employee,User user,String keyword,int dateType,int type,int pageSize,int pageNumber );

	/**
	 * 获取列表查询的总数
	 */
	public int getCountVerificationByConditon( Company company,Employee employee,User user,String keyword,int dateType,int type );
}
